﻿using System.Collections.Generic;
using System.ServiceModel;
using VMukti.Business.CommonDataContracts;

namespace VMukti.Business.WCFServices.BootStrapServices.NetP2P
{
    [ServiceContract(CallbackContract = typeof(INetP2PBootStrapService))]
    public interface INetP2PBootStrapService
    {
        [OperationContract(IsOneWay = true)]
        void svcNetP2PServiceJoin(string sSuperNodeIP);

        [OperationContract(IsOneWay = true)]
        void svcNetP2PAddUser(string uName);

        [OperationContract(IsOneWay = true)]
        void svcNetP2PRemoveUser(string uName);

        [OperationContract(IsOneWay = true)]
        void svcNetP2PGetBuddyInfo(string uName);

        [OperationContract(IsOneWay = true)]
        void svcAddBuddies(string username, string BuddyName, string BuddyStatus);

        [OperationContract(IsOneWay = true)]
		void svcRemoveBuddies(string username, string BuddyName);

        [OperationContract(IsOneWay = true)]
        void svcNetP2PReturnBuddyInfo(string uName, List<string> lstMyBuddyList);

        [OperationContract(IsOneWay = true)]
        void svcNetP2PGetSuperNodeBuddyStatus(string uName);

        [OperationContract(IsOneWay = true)]
        void svcNetP2PReturnSuperNodeBuddyStatus(string uName, List<string> lstSNBuddyList);

        [OperationContract(IsOneWay = true)]
        void svcNetP2PUnJoin(string uName);

        [OperationContract(IsOneWay = true)]
        void svcSetSpecialMsg(string from, string to, string msg, clsModuleInfo objModInfo, string IPAddress);

        [OperationContract(IsOneWay = true,Name="svcSetPageSpecialMsg")]
        void svcSetSpecialMsg(string from, string to, string msg, clsPageInfo objPageInfo, string IPAddress);
        //void svcSetSpecialMsg(string from, string to, string msg, List<clsModuleInfo> lstModuleInfo,string IPAddress);

        [OperationContract(IsOneWay = true)]
        void svcSetRemoveDraggedBuddy(string from, List<string> to, string msg, clsModuleInfo objModInfo,string IPAddress);


        [OperationContract(IsOneWay = true)]
        void svcAddDraggedBuddy(string from, string to, string msg, clsModuleInfo objModInfo, string IPAddress);

        [OperationContract(IsOneWay = true,Name="svcAddPageDraggedBuddy")]
        void svcAddDraggedBuddy(string from, string to, string msg, List<clsModuleInfo> lstModuleInfo, string IPAddress);


    }

    public interface INetP2PBootStrapChannel : INetP2PBootStrapService, IClientChannel
    {
    }
}
